package Gather.ImmutableGather;

import java.util.HashMap;
import java.util.Map;
import java.util.function.BiConsumer;

/**
 * ClassName:Gather005
 * Package:Gather.ImmutableGather
 * Description:
 *
 * @Author:ZhangXin
 * @Create2023/2/23-21:05
 * @Version:v1.0
 */
public class Gather005 {
    public static void main(String[] args) {
        /*创建Map的不可变集合,键值对的数量超过10个*/

        //创建一个普通的Map集合
        HashMap<String, String> hm = new HashMap<>();
        hm.put("张三", "南京");
        hm.put("李四", "北京");
        hm.put("王五", "上海");
        hm.put("赵六", "北京");
        hm.put("孙七", "深圳");
        hm.put("周八", "杭州");
        hm.put("吴九", "宁波");
        hm.put("郑十", "苏州");
        hm.put("刘一", "无锡");
        hm.put("陈二", "嘉兴");
        hm.put("aaa", "山西");
//        //利用上面的数据获取一个不可变的的集合
//        //获取得到所有的键值对对象(Entry对象)
//        Set<Map.Entry<String, String>> entries = hm.entrySet();
//        //把entries变成一个数组
//        Map.Entry[] arr1 = new Map.Entry[0];
//        //Map.Entry[] arr = entries.toArray(new Map.Entry[0]);
//        //toArray方法在底层会比较集合的长度跟数组的长度两者的大小
//        //如果集合的长度>数组的长度：数据在数组中放不下,此时会根据实际数据的个数重新创建数组
//        //如果集合的长度<=数组的长度：数据在数组中放得下,此时不会创建新的数组,而是直接用
//        Map.Entry[] arr2 = entries.toArray(arr1);
//        Map map = Map.ofEntries(arr2);
//        map.forEach(new BiConsumer() {
//            @Override
//            public void accept(Object key, Object value) {
//                System.out.println(key + "=" + value);
//            }
//        });

//        Map<Object, Object> map = Map.ofEntries(hm.entrySet().toArray(new Map.Entry[0]));

        Map<String, String> map = Map.copyOf(hm);
        map.forEach(new BiConsumer<String, String>() {
            @Override
            public void accept(String key, String value) {
                System.out.println(key + "=" + value);
            }
        });

    }
}
